地图显示事件监听 Sample详情
最后更新时间:2019年6月17日
当对地图进行移动、缩放、旋转等操作时,地图视图不断在刷新、变化,并且能够监听到种种变化,如:级别变化、旋转角度变化、中心点变化、位置变化、地图刷新、动画操作。MapView地图视图控件提供了对应的监听器来捕捉事件,并在回调方法中提供变化前后的数值。
重要说明:这几种监听事件提供的回调函数都是在子线程中响应的,获取其中信息后如果需要操作UI界面,则需回到主线程操作。
监听地图缩放级别的变化情况,可获取变化前后的地图分辨率。
//实例化地图视图级别变化监听器 MapViewZoomChangedListener zoomchangelistener=new MapViewZoomChangedListener() { @Override public void mapViewZoomChanged(MapView mapView, double oldResolution, double newResolution) { //可以获取地图级别发生变化前后的分辨率 } }; //为地图视图对象设置监听器 mapView.setZoomChangedListener(zoomchangelistener);
监听地图旋转角度的变化情况,可获取旋转前后的角度值。
//实例化地图视图旋转角度变化监听器 MapViewRotateChangedListener anglechangelistener=new MapViewRotateChangedListener() { @Override public void mapViewRotateChanged(MapView mapView, float oldAngle, float newAngle) { //获取地图旋转角度发生变化前后的角度值 } }; //为地图视图对象设置监听器 mapView.setRotateChangedListener(anglechangelistener);
监听地图视图中心点的变化情况,获取变化前后的地图视图中心点坐标。
//实例化地图视图中心点变化监听器 MapViewCenterChangedListener centerchangelistener=new MapViewCenterChangedListener() { @Override public void mapViewCenterChanged(MapView mapview, Dot dot, Dot dot1) { //可以获取地图视图中心点发生变化前后的地图坐标点 } }; //为地图视图对象设置监听器 mapView.setCenterChangedListener(centerchangelistener);
监听地图位置的变化情况,可获取变化前后的地图位置MapPosition信息,具体包括:中心点、分辨率、旋转中心、旋转角、倾斜角信息。
//实例化地图位置变化监听器 MapView.MapViewPositionChangedListener mapViewPositionChangedListener=new MapView.MapViewPositionChangedListener() { @Override public void mapViewPositionChanged(MapPosition mapPosition, MapPosition mapPosition1) { //获取地图变化的前后位置,从MapPosition对象中可获取到地图位置的诸多要素:中心点、分辨率、旋转中心、旋转角、倾斜角 } }; //为地图视图对象设置监听器 mapView.setCenterChangedListener(mapViewPositionChangedListener);
监听地图刷新的事件,可判断地图刷新开始、完成的时间节点。
//实例化地图视图刷新监听器 MapViewRefreshListener refreshchangelistener=new MapViewRefreshListener() { @Override public void mapViewWillStartRefresh(MapView arg0) { //地图开始刷新 } @Override public void mapViewDidFinishRefresh(MapView arg0) { //地图刷新完成 } }; //为地图视图对象设置监听器 mapView.setRefreshListener(refreshchangelistener);
监听地图的动画操作,可判断动画开始、结束的时间节点。
//实例化地图视图动画监听器 MapViewAnimationListener animationchangelistener=new MapViewAnimationListener() { @Override public void mapViewAnimationStart(MapView mapView, int animationType) { //动画开始,并且可以获取到动画的类型 } @Override public void mapViewAnimationFinish(MapView mapView, int animationType, boolean normalFinish) { //动画结束 } }; //为地图视图对象设置动画监听器 mapView.setAnimationListener(animationchangelistener);
地图动画类型包括: